﻿<pre>
知识点一：对函数与全局变量特性进一步理解
	案例一：请问以下代码输出什么？
	<script>
		var j =1;
		function B(){ return j;}
		var j=2;
		document.write(B());		
	</script>

	案例二：这个案例要求已经掌握数组
	<script>
		function A(){
			var rs = new Array();
			for(var i=0;i<3;i++){
				rs[i] =  function(){ return i;}  ;
			}
			return rs;
		}
		var rst = A()
		document.write(rst[0]());		//输出什么呢？
		document.write(rst[1]());		//输出什么呢？
		document.write(rst[2]());		//输出什么呢？
		document.write(rst[3]());		//输出什么呢？
	</script>


知识点二：变量重复声明了怎么办？
	var i=10;
	var i;				//如果仅仅是重复声明：声明会被忽略，如果声明同时赋值情况就会变化，请自己尝试
	document.write(i);  //结果10


知识点三：还是还可以这样写的
	var fnR = (
		function f(n){
			if(n<1){return 1;}
			else{		 
			  document.write(n);
			  f(n-1);
			}
		});
	
	fnR(5) ;


知识点四: arguments.callee
	功能:arguments.callee只能用在函数内部,代表函数本身.
	
	案例:
	<script>
		function F(p) {
		  if(p>1){
			   arguments.callee(p-1); 
			   //相当于 F(p-1),优点是如果函数体很庞大，修改函数名时候这个地方代码不用动
			   //也就是函数名修改函数体无需修改。因为arguments.callee会自动获取当前函数名
			   document.write(p) ;
			}
		}
		F(6);
	</script>
	
	
	案例2:
		<script>
			(function(p) { 
				echo(p); //第一次运行输出p1并返回现场调用第二次返回P2，直到三次调用完成
				//echo(arguments.callee);
				return arguments.callee; 
			})('P1')('P2')('P3');  
		</script>
 


知识点五：懒函数
	只运行一次就失效的函数懒函数，干一次不干了。
	<script>
		function F(){
			console.log(666);
			F = null;
		}
		
		F();
		F(); //无法运行，这时候F已经是null.
	</script>
</pre>